Spec-Zone.ru › C++

std::literals::chrono_literals::operator""s

Определено в заголовке <chrono>
constexpr std::chrono::seconds
    operator""s( unsigned long long secs );
(1) (с C++14)
constexpr std::chrono::duration</*unspecified*/>
    operator""s( long double secs );
(2) (с C++14)

Формирует литерал типа std::chrono::duration представляющий секунды.

1) Целочисленная литерал, возвращает ровно std::chrono::seconds(secs).
2) Литерал с плавающей точкой, возвращает продолжительность с плавающей точкой, эквивалентную std::chrono::seconds.

Параметры

secs - количество секунд

Возвращаемое значение

Литерал типа std::chrono::duration.

Возможная реализация

constexpr std::chrono::seconds operator""s(unsigned long long s)
{
    return std::chrono::seconds(s);
}
constexpr std::chrono::duration<long double> operator""s(long double s)
{
    return std::chrono::duration<long double>(s);
}

Примечания

Этот оператор объявлен в пространстве имен std::literals::chrono_literals, где literals и chrono_literals являются встроенными именованными пространствами. Доступ к этому оператору можно получить с помощью:

  • using namespace std::literals,
  • using namespace std::chrono_literals, или
  • using namespace std::literals::chrono_literals.

Кроме того, внутри пространства имен std::chrono, директива using namespace literals::chrono_literals; предоставляется стандартной библиотекой, так что если программист использует using namespace std::chrono; для получения доступа к классам в библиотеке chrono, соответствующие операторы литералов также становятся видимыми.

std::string также определяет оператор""s для представления литеральных объектов типа std::string, но это строковая литерал: 10s — десять секунд, но "10"s — строка из двух символов.

Пример

#include <chrono>
#include <iostream>
 
int main()
{
    using namespace std::chrono_literals;
 
    std::chrono::seconds halfmin = 30s;
    std::cout << "Half a minute is " << halfmin.count() << " seconds"
        " (" << halfmin << ").\n"
        "A minute and a second is " << (1min + 1s).count() << " seconds.\n";
 
    std::chrono::duration moment = 0.1s;
    std::cout << "A moment is " << moment.count() << " seconds"
        " (" << moment << ").\n"
        "And thrice as much is " << (moment + 0.2s).count() << " seconds.\n";
}

Вывод:

Half a minute is 30 seconds (30s).
A minute and a second is 61 seconds.
A moment is 0.1 seconds (0.1s).
And thrice as much is 0.3 seconds.

См. также

(конструктор)
создаёт новую продолжительность
(публичный член-функция std::chrono::duration<Rep,Period>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/operator%22%22s

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API